test

10.7 追踪内存分配

接下来要介绍本书中有关Memleak的最后一个特性,即跟踪指定类型的内存分配,以之前的示例来说,就是找出Leak$DemoObject实例都是再哪里分配的。右键点击目标类型,选择 Trace Allocations菜单,然后Memleak会将导致内存泄漏的目标代码附近的方法调用列出来。

Figure 10-20

从上面的截图中可以看到,put方法调用次数多余remove方法。如果是在Eclipse中运行Memleak的话,右键点击相应的栈帧,选择Open Method菜单就可以直接跳转到目标代码处了。

Figure 10-21

针对某个类的内存分配追踪只能启用一次。

注意:启用内存分配追踪可能会引入较大的性能开销。例如,因为java.lang.String类的使用非常频繁,因此,追踪它的内存分配显然不太理智。